<?php

require(DIRETORIO."app/Models/AppDesktopDAO.php");

class C_AppDesktop{

	protected static $lk = NULL;
	
	public static function init(){
		global $db_Mysql;

		self::$lk = $db_Mysql;
	}

	public static function getDB(){
		if(self::$lk == NUll)
			self::init();

		return self::$lk;
	}

	public static function getProjects($post){

		$objProjectDAO	= new ProjectDAO(self::getDB());
		$pagination		= (int)$post["page"];
		$objProjects	= $objProjectDAO->getProjects(0,$pagination);
		$numberRows		= $objProjectDAO->getNumberRows();

		$count			= 0;
		foreach($objProjects as $row){
			foreach($row->fieldsDB as $key => $nameField){
				$arrayReturn[$count][$key] = $row->$key;
			}

			$count++;
		}

		return json_encode(array($arrayReturn, $numberRows));
	}


	public static function getTasks($post){
		if(count($post) > 0){
			$objTaskDAO	= new AppDesktopDAO(self::getDB());
			$objTasks	= $objTaskDAO->getTasksUser($post["idUser"]);

			$count			= 0;
			foreach($objTasks as $key => $row){
				$arrayReturn[$count][$key] = $row;
				
				$count++;
			}
			
			return json_encode(array($count > 0,$arrayReturn));
		}

		return json_encode(array(false, "Não foi possível listar as Tarefas do usuário!"));
	}

	public static function changeStateTask($post){
		$return = array(false,"Não foi possível alterar o estado da Tarefa!");

		if(count($post) > 0){
			$objTaskDAO		= new TaskDAO(self::getDB());		
			$objTask		= new Task();
			$objTaskGoing	= new TaskGoing();
		
			$objTask->id			= (int)$post['idTask'];
			$objTask->idTaskState	= (int)$post['idTaskState'];

			//Seta o Andamento da tarefa
			$objTaskGoing->idTask		= $objTask->id;
			$objTaskGoing->hours		= (int)$post['hours'];
			$objTaskGoing->description  = $post['description'];
			$objTaskGoing->dateGoing	= $post['dateGoing'];
			$objTaskGoing->idUser		= $post['idUser'];
			
			if($objTaskDAO->saveTaskGoing($objTaskGoing)){
				if($objTaskDAO->save($objTask)){
					$return = array(true,"O estado da Tarefa foi alterado com sucesso!");
				}else{
					$return = array(false,"Não foi possível alterar o estado da Tarefa!");
				}
			}else{
				$return = array(false,"Não foi possível cadastrar o andamento da Tarefa!");
			}
		}

		return json_encode($return);
	}

	public static function getNotifications($post){
		if(count($post) > 0){
			$objNotificationDAO	= new AppDesktopDAO(self::getDB());
			$objNotifications	= $objNotificationDAO->getNotificationsUser($post["idUser"]);

			$count			= 0;
			foreach($objNotifications as $key => $row){
				$arrayReturn[$count][$key] = $row;
				
				$count++;
			}
			
			return json_encode(array($count > 0,$arrayReturn));
		}

		return json_encode(array(false, "Não foi possível listar as Notifacações do usuário!"));
	}

	public static function getTaskStates($post){
		if(count($post) > 0){
			$objTaskStatesDAO	= new AppDesktopDAO(self::getDB());
			$objTaskStates	= $objTaskStatesDAO->getTaskStates($post["idProjeto"]);

			$count			= 0;
			foreach($objTaskStates as $key => $row){
				$arrayReturn[$count][$key] = $row;
				
				$count++;
			}
			
			return json_encode(array($count > 0, $arrayReturn));
		}

		return json_encode(array(false, "Não foi possível listar os Estados de Tarefa do projeto!"));
	}

	public static function login($post){
		if(count($post) > 0){
			$objUserDAO = new UserDAO(self::getDB());
			$idUser		= $objUserDAO->login($post['username'],$post['password']);

			if($idUser > 0){
				$tempObj = $objUserDAO->getUsers($idUser);
				$count			= 0;

				foreach($tempObj as $row){
					foreach($row->fieldsDB as $key => $nameField){
						$arrayReturn[$count][$key] = $row->$key;
					}

					$count++;
				}
				return json_encode(array(true, $arrayReturn));
			}else{
				return json_encode(array(false,NULL));
			}
		}

		return json_encode(array(false,NULL));
	}


}
?>